package com.hengpeng.itfinoss.service.stm;

import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;

import com.hengpeng.common.exception.ServiceResult;
import com.hengpeng.common.persist.QueryResult;
import com.hengpeng.common.persist.query.model.Order.OrderType;
import com.hengpeng.itfinbase.message.ResponseMessage;
import com.hengpeng.itfinbase.persist.SmsLog;
import com.hengpeng.itfinbase.persist.SmsLog.SmsLogState;
import com.hengpeng.itfinbase.persist.SmsLog.SmsLogTransType;
import com.hengpeng.itfinbase.persist.SmsLog.SmsSendState;
import com.hengpeng.itfinbase.persist.SmsPartner;

/**
 *  短信日志服务接口
 * @author lanmingming
 */
public interface SmsService
{

	/**
	 * <pre>
	 *  分页查询短信日志
	 * </pre>
	 * @param content 短信内容
	 * @param mobile 手机号码
	 * @param retryCount 重复发送次数
	 * @param sendTime1 发送时间1
	 * @param sendTime2 发送时间2
	 * @param state 短信发送状态(已发送, 正在发送, 等待发送)
	 * @param storeId 会员店流水号
	 * @param successTime1发送成功时间1
	 * @param successTime2发送成功时间2
	 * @param type 短信类型(普通, 通知), 告警, 促销, 找回密码)
	 * @param indexPage 当前页号
	 * @param pageSize 每页显示记录数
	 * @param sortMap 排序集合
	 * @return
	 */
	public ServiceResult<List<SmsLog>> selectSmsLogPage(String content, String mobile, Integer retryCount,
			Date sendTime1, Date sendTime2, SmsLogState state, Date successTime1, Date successTime2, SmsLogTransType type,
			String userId, int indexPage, int pageSize, OrderType order, String orderField);

	/**
	 * 重发短信
	 * @param ids
	 * @return
	 */
	public ResponseMessage smsReSend(String ids);

	/**
	 * 调用高速通道即时发送短信，非定时任务发送
	 * @return
	 */
	boolean smsImmediatelySend(String mobile, String content, SmsSendState state, SmsLogTransType type);

	/**
	 * 短信合作商分页查询
	 * @param id
	 * @param name
	 * @param pageIndex
	 * @param pageSize
	 * @param sortMap
	 * @return
	 */
	public QueryResult<SmsPartner> findSmsPartnerWithPage(Long id, String name, Integer pageIndex, Integer pageSize,
			LinkedHashMap<String, OrderType> sortMap);

	/**
	 * 查询状态为打开的短信合作商
	 * @return
	 */
	public List<SmsPartner> findAllOpen();

}
